﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Common;
using System.Data.SqlClient;
//using EnvDTE;
//using EnvDTE80;
using System.Reflection;
using System.Xml.Linq;
using System.Xml;
using System.Diagnostics;
using System.Xml.XPath;
using System.IO;
using System.Text.RegularExpressions; 

namespace MVCScaffold.UI
{
    public partial class Configuracoes : Form
    {
        public Configuracoes()
            //: this(null, null)
        {
            InitializeComponent();
            this.SetarIconeForm();
        }

        //public Configuracoes(DTE2 applicationObject, AddIn addInInstance)
        //{
        //    InitializeComponent();
        //    //this.applicationObject = applicationObject;
        //    //this.addInInstance = addInInstance;

        //    this.SetarIconeForm();
        //}

        private void SetarIconeForm()
        {
            try
            {
                this.Icon = MVCScaffold.UI.Properties.Resources.IconeForm;
            }
            catch {}
        }

        //private DTE2 applicationObject;
        //private AddIn addInInstance;
        private GerenciadorEDMX gerenciadorEDMX = null;
        private GerenciadorArquivoProjeto gerenciadorArquivoProjeto = null;

        private void buttonProcurar_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = null;
            try
            {
                openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "Visual C# Project File (*.csproj)|*.csproj";
                openFileDialog.RestoreDirectory = true;

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    gerenciadorArquivoProjeto = new GerenciadorArquivoProjeto(openFileDialog.FileName);
                    if (!String.IsNullOrEmpty(gerenciadorArquivoProjeto.NomeArquivoEDMX))
                    {
                        textBoxArquivoProjeto.Text = openFileDialog.FileName;
                        gerenciadorEDMX = new GerenciadorEDMX(Path.Combine(gerenciadorArquivoProjeto.DiretorioProjeto, gerenciadorArquivoProjeto.NomeArquivoEDMX));
                        this.MontarGridComEntidades();
                    }
                    else
                    {
                        MessageBox.Show("EDMX file not found.");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void MontarGridComEntidades()
        {
            panelPrincipal.Controls.Clear();
            int contador = 0;

            foreach (var item in gerenciadorEDMX.Entidades.OrderBy(x => x.Nome))
            {
                panelPrincipal.Controls.Add(new UserControlEntidade()
                {
                    Location = new Point(10, contador * 30),
                    Entidade = item
                });
                contador++;
            }
        }

        private void buttonGerarCodigo_Click(object sender, EventArgs e)
        {
            GerenciadorTemplatesBase gerenciadorTemplates = null;
            try
            {
                gerenciadorTemplates = new GerenciadorTemplates(gerenciadorEDMX, gerenciadorArquivoProjeto);
                gerenciadorTemplates.Executar();
                MessageBox.Show("Success");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}
